# 1.介绍：js异步请求型
# 一些后端语言框架如django是把变量渲染到html模板最终再response返回，用户交互时需要刷新页面才能看到修改后的效果。
# 为了更好的网页体验和前后端程序员工作分离。前端js工作中也有类似后端requests包的前端操作包。
# 导致有些数据第一次html中并看不到，浏览器会在加载html后执行js，但requests包不是浏览器，单次请求无法看到最终信息。

# 2.chrome开发者工具使用

# 3.解决思路：js中发送http请求，浏览器开发者工具会拦截到，分析http请求结构，用requests包构造请求获取信息。
# 辨别静态型和js型小技巧：
# 1)requests库请求页面url得到的源代码不含数据
# 2)看XHR里有没有
# 3)看post类型
# 4)猜请求接口关键字comment list
# 5)ctrl+F开发者工具中搜索。查看疑似请求的响应是不是json评论数据。

# 4. 伪造请求头、cookie和session

# 5. 尝试请求商品详情页
# requests库请求页面url得到的源代码不含数据
import requests

url = 'https://item.jd.com/100009077475.html'  # iphone12
# 伪造headers，否则重定向到登录页面，经测试给user-agent即可。
headers = {
    # 'referer': 'https://search.jd.com/',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 11_0_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.67 Safari/537.36',
    # 'cookie': '__jdu=1599471405142969161485; shshshfpa=7aa99a93-8740-8347-7a36-9796bf8a56f1-1599471406; shshshfpb=rZoE4ylDovn%204UYgNS8j1vg%3D%3D; pinId=uGywawhW5xQ; pin=zzdxyz; unick=%E7%BB%86%E8%BD%AF%E8%B7%91; _tp=EtAWqzuy%2FaNSh0LFcTfGgQ%3D%3D; _pst=zzdxyz; cn=0; __jdv=76161171|direct|-|none|-|1606737681370; areaId=7; ipLoc-djd=7-412-3546-0; PCSYCityID=CN_410000_410100_410104; TrackID=15-vsa5KNp37GRSsGyDw3_WgLbFNcS-cKjulnm5KayEhOB3crMdyeuKtvOsoxMoS9g-6XERHFcQM7wC8u8bPtQ9A9NiXmzHzDjqAQR3qGyM8ePE0V2KktAWJNlAycKZix; ceshi3.com=000; user-key=48887e42-929f-42af-8a1c-641fd968ad8c; __jda=122270672.1599471405142969161485.1599471405.1606737681.1606959119.13; __jdc=122270672; shshshfp=ea5f09a7b02898b86d5dff6cb7b0c445; 3AB9D23F7A4B3C9B=UG7P7DMIMN27RQZ7BLKOPDJD2UXABGBEXHUPQM7XKUGBCV7XFPW6BMR65QWMBC32ZMU6HBG5WPVV4Q6R6KXJWEV534; shshshsID=5b61c49f3cd4e957186fbb945c2d7894_3_1606959130303; __jdb=122270672.3.1599471405142969161485|13.1606959119',

}
resp = requests.get(url, headers=headers)
html_content = resp.text
print(html_content)


# 6. 最终在chrome开发者工具中找到真正携带数据的请求
# https://club.jd.com/comment/productPageComments.action




